#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

// 没有指明路径就是在当前路径下创建
#define FILE_NAME(number) "log.txt"#number    //将括号内部的值转换成字符串，两个字符串通过#具有自动连接特性

// 每一个宏，对应的数值，只有一个比特位是1，彼此位置不重叠

//#define ONE (1<<0)
//#define TWO (1<<1)
//#define THREE (1<<2)
//#define FOUR (1<<3)
//
//void show(int flags)
//{
//    if(flags & ONE) printf("one\n");
//    if(flags & TWO) printf("two\n");
//    if(flags & THREE) printf("three\n");
//    if(flags & FOUR) printf("four\n");
//}
int main()
{
    printf("stdin->fd:%d\n", stdin->_fileno);
    printf("stdout->fd:%d\n", stdout->_fileno);
    printf("stderror->fd:%d\n", stderr->_fileno);
    umask(0); //将系统继承给此进程的掩码设置为0，防止影响此进程
    int fd1 = open(FILE_NAME(1), O_WRONLY | O_CREAT | O_APPEND, 0666);
    int fd2 = open(FILE_NAME(2), O_WRONLY | O_CREAT | O_APPEND, 0666);
    int fd3 = open(FILE_NAME(3), O_WRONLY | O_CREAT | O_APPEND, 0666);
    int fd4 = open(FILE_NAME(4), O_WRONLY | O_CREAT | O_APPEND, 0666);
    int fd5 = open(FILE_NAME(5), O_WRONLY | O_CREAT | O_APPEND, 0666);
    //int fd = open(FILE_NAME, O_RDONLY);
    //if(fd < 0)
    //{
    //    perror("open");
    //    return 1;
    //}
    //
    //char buffer[1024];
    //ssize_t num = read(fd, buffer, sizeof(buffer)-1);
    //if(num > 0) buffer[num] = 0;//认为是字符串，因为是C语言
    //printf("%s", buffer);




    //int cnt = 5;
    //char outBuffer[64];
    //while(cnt)
    //{
    //    sprintf(outBuffer, "%s:%d\n", "aaaa", cnt--);//outBuffer相当于写入的缓冲区
    //    // 以\0作为字符串结尾，是C语言的规定，和文件有什么关系
    //    write(fd, outBuffer, strlen(outBuffer));//向文件中写入字符串长度+1是C语言的规定
    //}
    printf("%d\n", fd1);
    printf("%d\n", fd2);
    printf("%d\n", fd3);
    printf("%d\n", fd4);
    printf("%d\n", fd5);
    close(fd1);
    close(fd2);
    close(fd3);
    close(fd4);
    close(fd5);
















    //show(ONE);
    //printf("----------------------\n");
    //show(TWO);
    //printf("----------------------\n");
    //show(ONE | TWO);
    //printf("----------------------\n");
    //show(ONE | TWO | THREE);
    //printf("----------------------\n");
    //show(ONE | TWO | THREE | FOUR);
    //printf("----------------------\n");







    //FILE* fp = fopen(FILE_NAME, "w");//r, w, r+, w+ 分别对应读、写、读写(不存在就出错)、读写(不存在创建)，甚至可以r+b,w+b
    
    //FILE* fp = fopen(FILE_NAME, "r");//r, w, r+, w+ 分别对应读、写、读写(不存在就出错)、读写(不存在创建)，甚至可以r+b,w+b
    //FILE* fp = fopen(FILE_NAME, "a");//r, w, r+, w+ 分别对应读、写、读写(不存在就出错)、读写(不存在创建)，甚至可以r+b,w+b

   // if(NULL == fp)
   // {
   //     perror("fopen");
   //     return 1;
   // }// a(append,追加)，a+()
   // int cnt = 5;
   // while(cnt)
   // {
   //     fprintf(fp, "%s:%d\n", "hello world", cnt--);
   // } 
   
  // char buffer[64];
  // while(fgets(buffer, sizeof(buffer) - 1, fp) != NULL)
  // {
  //     buffer[strlen(buffer) - 1] = 0;//消除\n
  //     puts(buffer);
  // }
  
   // int cnt = 5;
   // while(cnt)
   // {
   //     fprintf(fp, "%s:%d\n", "hello world", cnt--);
   // }
   // fclose(fp);
    return 0;
}
